package link.wangkui.lamda.convenient.reference;

import link.wangkui.lamda.IConverter;

/**
 *  XX::xx，它也是Java8的新特性便捷式引用
 */
public class ConvenientReference {
    public static void main(String[] args) {
        Something something=new Something();
        //[参照物]直接把逻辑放到这调用
        IConverter<String, String> converter01 = s -> String.valueOf(s.charAt(0));
        //引用的方法体里面逻辑可以更多，否则只是一句代码并不能适合所有的情况
        IConverter<String, String> converter02 = something::startsWith;
        System.out.println(converter01.convert("Java"));
        System.out.println(converter02.convert("Java"));


        /**
         * 提醒；工厂函数中依然只能有一个函数，否则会报错
         *
         * 四饼::，可以让我们直接引用到Person类的构造函数，
         * 然后 Java 编译器能够根据类的签名选中正确的构造器去实现 PersonFactory.create 方法
         */
        //[参照物]：(firstName, lastName) -> new Person(firstName, lastName);
        IPersonFactory<Person> personFactory = Person::new;
        Person person = personFactory.create("Peter", "Parker");
        System.out.println(person);
    }
}

